具名常數(Constant)與變數的功能相差無幾,但須注意的是,具名常數需給訂初始值(變數最好也給定初始值,我們後面的單元會提到),而且給定之後就不能再做值的變更了(編譯器會判定不合法)。
這樣的好處是可以使用他來代表一個固定的數值,藉以取代掉前面所提的魔術數字或魔術字串。
.使用具名常數來宣告資料
如同上面所講的,使用具名常數來代表一個固定的數值或字串,這樣對於程式的可讀性與維護性的幫助很大。讓我們想想,當您接手別人的程式時,最怕的是什麼狀況?程式中不斷的出現某一字串,不斷的出現某些固定的數字,當這個值出現在同一個模組時,OK 就花一點時間改就好了,可是當程式模組有上千支時,要逐一修改也是一件不小的工程,您會說用 Editor 的 Replace 就好了啊!但您能確保是可以完全的取代掉嗎?而如果同樣的語意以不同的表達字串呢(例如差一個字)?那絕對是一件苦差事。
.避免直接使用數字
最近就在改前人的程式,真的改到想抓狂。不過改過之後,以後真的就輕鬆了。所以養成避免直接使用數字或字串的好習慣,多用具名常數(或者全域變數),多使用資源檔,確實會對程式的撰寫與修改有幫助的。
.保持具名常數的一致性
這句話的意思是不要一時想到使用具名常數,然後久了或時間緊迫又將數字與字串直接寫在程式中,因為這樣您會忘了以為都使用具名常數取代掉了魔術數字或魔術字串,而漏掉了應該需要修改的地方。
提供一點意見,雖然我沒再深入研究.
以.NET來說.
常數是Complier time 時產生.
變數是Run time 時產生.
感謝 pantc328 大的補充 ^^
這點我也有讀過
好像有一個書上常用的例子
就是
PI=3.1415926535897932384626433832